'use strict';

/**
 * 封装登录校验中间件
 * @param app
 * @return {function(*, *): Promise<void>}
 */
module.exports = () => {
  return async function(ctx, next) {
    const token = ctx.headers.token ? ctx.headers.token : '';
    try {
      ctx.state.user = await ctx.app.jwt.verify(token, ctx.app.config.jwt.secret); // 校验token
      await next();
    } catch (error) {
      await ctx.failure(`${error.message}`, null, 403);
    }
  };
};
